package spring.chatroom.common.utils;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.List;

public class TypeTran {
    public static <S, T> List<T> ListTran(List<S> list, Class<T> taget) {

        List<T> result = new ArrayList<>();
        for (S s : list){
            T t = BeanUtils.instantiate(taget);

//             他会把空的也给复制
//            BeanUtils.copyProperties(s, t);
            //使用hutool的复制他可以避免复制空的
            BeanUtil.copyProperties(s, t, CopyOptions.create().setIgnoreNullValue(true));

            result.add(t);
        }
        return result;
    }

    public static <S, T> List<T> ListTran(List<S> source, List<T> taget) {

        for (int i = 0; i < source.size(); i++) {
            S s = source.get(i);
            T t = taget.get(i);
//             他会把空的也给复制
//            BeanUtils.copyProperties(s, t);
            //使用hutool的复制他可以避免复制空的
            BeanUtil.copyProperties(s, t, CopyOptions.create().setIgnoreNullValue(true));
        }
        return taget;
    }

}
